// 引入express模块
let express = require('express');
// 引入body-parser模块
let bodyParser = require('body-parser');

// 实例化
let app = express();
// 添加JSON解析
app.use(bodyParser.json()); // 解析post提交的数据
app.use(bodyParser.urlencoded({ extended: false })); // 解析post提交的键值对的数据

// 开启一个静态资源服务器：借助express的中间件 static
app.use(express.static('./'));

// 真实接口：有语义的 获取数据：get 提交数据：POST 修改：put 删除：delete restful接口规范
/*

    用户管理
        * 验证用户是否存在
        * 注册
        * 登录：生成token
        * 查询gid为xx的用户
        * 修改密码
        * 删除gid为xx的用户
        * 查询所有用户

*/
let userList = [
    {
        gid: 1,
        name: '宋雨琦',
        pwd: 123
    },
    {
        gid: 2,
        name: '石宇奇',
        pwd: 123
    },
    {
        gid: 3,
        name: '白露',
        pwd: 123
    }
]

// 验证用户是否存在
app.get('/user/checkname', (req, res) => {
    // get请求： 数据写在params
    let { name } = req.query; // 解构 ES6的写法
    // console.log(name);

    // 返回满足条件的对象，最终还是数组的形式：数组的长度如果不为0，就是查找同名，不给注册
    let info = userList.filter(item => item.name == name).length;

    let data = {}

    if (info) {
        data = {
            code: 3000,
            flag: false,
            message: '用户已存在不能注册'
        }
    } else {
        data = {
            code: 2000,
            flag: true,
            message: '可以注册'
        }
    }

    res.send(data);
})

// 注册功能： post请求：数据写在body里面
// 
app.post('/user/reg', (req, res) => {
    console.log(req.body);
    let { name, pwd } = req.body;
    userList.push({
        gid: userList.length + 1,
        name,
        pwd
    })
    let data = {
        code: 2000,
        flag: true,
        message: '注册成功',
        data: {
            userList
        }
    }

    res.send(data);
})

// 删除id为2的用户
// : 动态路由传参 req.params
app.delete('/user/:id', (req, res) => {
    // console.log(req.params);
    let {id} = req.params;
    let arr = userList.filter(item => item.gid != id); // 过滤掉id为x的数据
    let data = {
        code: 2000,
        flag: true,
        message: '删除成功',
        data: {
            arr
        }
    }
    res.send(data);
})

// 开启服务器：执行该文件就是开启服务器 node 06 server.js
// 端口号设置：1000-60000
app.listen(8080, () => {
    console.log('8080被访问');

});